1. Field of the Invention
The present invention generally relates to a command list controller for controlling hardware based on one or more instructions received from a central processing unit (CPU). Specifically, the present invention relates to a command list controller that can execute event wait and sublist execution commands when controlling device hardware.
2. Background Art
In computer graphics applications, hardware such as an accelerator is typically used to assist in graphic rendering. Generally, a hardware accelerator comprises a bitBLT engine and a scaler, which will work under the instruction of a central processing unit (CPU). To generate an image on a screen, the CPU must be available to instruct the accelerator to perform the required steps. Unfortunately, instruction of the accelerator places a large burden on the CPU, which could cause system delays and errors. This is especially the case where the CPU is required to execute certain commands such as, among others, event wait and sublist execution. An event wait command allows execution of a subsequent command in a list of commands to be delayed until a predetermined event occurs. This is especially useful, for example, when attempting to synchronize the hardware units. A sublist execution command allows a sublist of commands to be executed for a predetermined count (e.g., number of steps). When the count has been reached, the sublist is terminated and the address after the last executed command is saved. If a branch to the sublist occurs at a later time, execution will continue from the saved address.
Since executing commands such as event wait and sublist execution could “consume” the CPU, the capability to off-load such functionality from the CPU could be a valuable asset. Heretofore, controllers have been provided to control various hardware units. No existing controller, however, allows execution of commands such as event wait and sublist execution to be off-loaded from a CPU. Moreover, no existing controller retrieves both hardware and controller commands from a memory based on an instruction(s) received from the CPU.
In view of the foregoing, there exists a need for a controller that is capable of off-loading instructions and functionality from a CPU. Moreover, a need exists for the controller to be able to receive an instruction from the CPU and retrieve corresponding commands from a memory. A further need exists for the controller to be able to execute retrieved controller commands such as event wait and sublist execution, while forwarding any hardware commands to the hardware.